﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exercise8
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("1000以内的完数有：");
            for (int i = 2; i <= 1000; i++)
            {
                if (IsPerfectNumber(i))
                {
                    Console.WriteLine(i);
                }
            }

            Console.ReadLine();
        }

        // 判断一个数是否为完数
        static bool IsPerfectNumber(int number)
        {
            int sum = 1; // 因子之和初始值为1，因为1是所有正整数的因子

            for (int i = 2; i * i <= number; i++)
            {
                if (number % i == 0)
                {
                    sum += i;
                    if (i * i != number) // 避免重复加入因子
                    {
                        sum += number / i;
                    }
                }
            }

            return sum == number;
        }
    }
}
